import Vue, { reactive } from "vue";
import Router from "vue-router";
import Login from "../components/login.vue";
import Home from "../components/Home.vue";
import Welcome from "../components/Welcome";
import Users from "../components/user/users.vue";
import Rights from "../components/power/Rights";
import Roles from "../components/power/Roles";
import Cate from "../components/goods/Cate";
import Params from "../components/goods/Params";
import GoodsList from "../components/goods/List";
import Add from "../components/goods/Add";
import Order from "../components/order/Order";
import Report from "../components/report/Report";

Vue.use(Router);
// export default new Router({
//   routes: [
//     {path:'/',redirect:'/login'}, //重定向
//     { path: '/login', component:Login },
//     { path: '/home', component:Home },
//   ]
// })
const router = new Router({
   routes: [
      { path: "/", redirect: "/login" }, //重定向
      { path: "/login", component: Login },
      {
         path: "/home",
         component: Home,
         redirect: "/welcome",
         children: [
            { path: "/welcome", component: Welcome },
            { path: "/users", component: Users },
            { path: "/rights", component: Rights },
            { path: "/roles", component: Roles },
            { path: "/categories", component: Cate },
            { path: "/params", component: Params },
            { path: "/goods", component: GoodsList },
            { path: "/goods/add", component: Add },
            { path: "/orders", component: Order },
            { path: "/reports", component: Report },
         ],
      },
   ],
});

// 挂载路由导航守卫
router.beforeEach((to, from, next) => {
   // to 将要访问的路径
   // from 代表从哪个路径跳转而来
   // next 是一个函数，表示放行
   //next()  放行    next('/login')  强制跳转

   if (to.path === "/login") return next();
   // 其他页面则要有token才能放行 之后的网络请求中要拿这个token放入请求头中
   const tokenStr = window.sessionStorage.getItem("token");
   if (!tokenStr) return next("/login"); /* 没有用else if */
   next();
});

export default router; /* 因为要挂载导航守卫 所以不能实时导出 */
